﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace Auktionshus
{
	public partial class FrmAuktionKlient : Form
	{
        NetworkConnection networkConnection;
        KlientMonitor klientMonitor;

        private KlientMonitor.ModtagetBesked formThreadModtagBesked;
        Thread lytteTråd;
        string brugernavn;

		public FrmAuktionKlient(NetworkConnection networkConnection, KlientMonitor klientMonitor, Thread lytteTråd, string brugernavn)
		{
            this.networkConnection = networkConnection;
            this.klientMonitor = klientMonitor;

            formThreadModtagBesked = ModtagBesked;
            klientMonitor.ModtagetBeskedEvent += ExternThreadModtagBesked;
            this.lytteTråd = lytteTråd;
            this.brugernavn = brugernavn;
			InitializeComponent();
		}

        private void AuktionKlient_Load(object sender, EventArgs e)
        {

            
        }

        private void btnByd_Click(object sender, EventArgs e)
        {
            int test;
			if (int.TryParse(txtBud.Text,out test))
			{
				klientMonitor.SkrivTilServer(txtBud.Text);
			}
			else
			{
				MessageBox.Show("Budet må kun være et heltal" + "\r\n");
			}
        }
        /// <summary>
        /// Metode der udskriver indgående beskeder
        /// </summary>
        /// <param name="besked"></param>
        private void ModtagBesked(string besked)
        {
            if (besked == "underbud")
            {
                txtStatus.AppendText("Bemærk! Dit bud var for lavt" + "\r\n");
            }
            else if (besked == "mindstebud")
            {

                txtStatus.AppendText("Bemærk! Dit bud var under mindste tilladte bud" + "\r\n");
			}
			else if (besked == "lukket")
			{
				txtStatus.AppendText("Bemærk! Der kan ikke bydes mere på denne auktion" + "\r\n");
			}
            else
            {
                txtStatus.AppendText(besked + "\r\n");
            }
        }

        /// <summary>
        /// Metode der bruger invoke så GUI komponenterne kan anvendes af lyttetråden.
        /// </summary>
        /// <param name="besked"></param>
        private void ExternThreadModtagBesked(string besked)
        { 
            this.Invoke(formThreadModtagBesked, besked);
        }
	}
}
